package day19
import org.apache.flink.streaming.api.windowing.time.Time
import org.apache.flink.streaming.api.scala._
object RealTimeScala {
  def main(args: Array[String]): Unit = {

    /**
      *
      * 需求：流数据的WordCount。使用netcat输入命令：nc -l -p 6666。然后启动本程序，
      * 然后在netcat里输入数据，在本程序控制台里就会输出wc
      * */
    // 1.获得流式处理的环境
    val senv: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment

    val dataStream: DataStream[String] = senv.socketTextStream("master", 6666)

    val sumed: DataStream[(String, Int)] = dataStream.flatMap(_.split(" "))
      .map((_, 1))
      .keyBy(0)//（注意下面的仅仅是统计5秒内的wc，而不是全部累加窗口函数）
      .timeWindow(Time.seconds(5)) //这个Time的包很不好找，需要自己戳进去timeWindow方法看参数，复制该包，然后粘贴该包。
      .sum(1)

    sumed.print()
    senv.execute("flink的scala的WC")
  }
}
